{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Multi-Agent Researcher\n",
    "\n",
    "This notebook demonstrates the multi-agent research approach, which uses a supervisor-researcher collaborative pattern to create comprehensive reports. The system consists of:\n",
    "\n",
    "1. A **Supervisor Agent** that plans the overall report structure and coordinates work\n",
    "2. Multiple **Research Agents** that investigate specific topics in parallel\n",
    "3. A workflow that produces a structured report with introduction, body sections, and conclusion\n",
    "\n",
    "## From repo "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "/Users/rlm/Desktop/Code/open_deep_research/src\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/rlm/Desktop/Code/open_deep_research/open-deep-research-env/lib/python3.11/site-packages/IPython/core/magics/osm.py:417: UserWarning: This is now an optional IPython functionality, setting dhist requires you to install the `pickleshare` library.\n",
      "  self.shell.db['dhist'] = compress_dhist(dhist)[-100:]\n"
     ]
    }
   ],
   "source": [
    "%cd ..\n",
    "%load_ext autoreload\n",
    "%autoreload 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "! pip install -U -q open-deep-research"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Compile the multi-agent graph\n",
    "\n",
    "Next, we'll compile the LangGraph workflow for the multi-agent research approach. This step creates the orchestration layer that manages communication between the supervisor and research agents."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.0.14\n"
     ]
    }
   ],
   "source": [
    "import uuid \n",
    "import os, getpass\n",
    "import open_deep_research   \n",
    "print(open_deep_research.__version__) \n",
    "from IPython.display import Image, display, Markdown\n",
    "from langgraph.checkpoint.memory import MemorySaver\n",
    "from open_deep_research.multi_agent import supervisor_builder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create a MemorySaver for checkpointing the agent's state\n",
    "# This enables tracking and debugging of the multi-agent interaction\n",
    "checkpointer = MemorySaver()\n",
    "agent = supervisor_builder.compile(name=\"research_team\", checkpointer=checkpointer)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Visualize the graph structure\n",
    "# This shows how supervisor and research agents are connected in the workflow\n",
    "display(Image(agent.get_graph(xray=1).draw_mermaid_png(max_retries=5)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Configure and run the multi-agent system\n",
    "# This sets up the model configuration and executes the research workflow\n",
    "\n",
    "# Configure models and search API for both supervisor and researcher roles\n",
    "config = {\n",
    "    \"thread_id\": str(uuid.uuid4()),\n",
    "    \"search_api\": \"tavily\",\n",
    "    \"supervisor_model\": \"openai:o3\",\n",
    "    \"researcher_model\": \"openai:o3\",\n",
    "    }\n",
    "\n",
    "# Set up thread configuration with the specified parameters\n",
    "thread_config = {\"configurable\": config}\n",
    "\n",
    "# Define the research topic as a user message\n",
    "msg = [{\"role\": \"user\", \"content\": \"What is model context protocol?\"}]\n",
    "\n",
    "# Run the multi-agent workflow with the specified configuration\n",
    "response = await agent.ainvoke({\"messages\": msg}, config=thread_config)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "==================================\u001b[1m Ai Message \u001b[0m==================================\n",
      "\n",
      "Here’s what I’ve gathered so far:\n",
      "\n",
      "• Model Context Protocol (MCP) is an open, client‑server standard created to let large‑language‑model assistants (Claude, Azure OpenAI, Copilot Studio, etc.) securely “plug into” external data sources and tools.  \n",
      "• It works like a “USB‑C for AI” — an LLM (the “host”) connects through an MCP client to one or more lightweight “MCP servers.” Each server exposes specific capabilities (APIs, files, databases, SaaS apps, etc.) in a uniform JSON schema, so the model can fetch context or invoke actions.  \n",
      "• The spec is public and already ships with SDKs (Python, TypeScript, Kotlin). Typical transports are STDIO, Server‑Sent Events, and WebSocket.  \n",
      "• Early adopters include Anthropic’s Claude Desktop, Microsoft Azure OpenAI, and Copilot Studio. There’s a growing catalogue of pre‑built servers for Slack, GitHub, Postgres, Google Drive, etc.\n",
      "\n",
      "Before I outline the report, I’d like to be sure I’m targeting the right depth and angle for you.\n",
      "\n",
      "1. What audience should the explanation assume? (e.g., non‑technical execs, software architects, hands‑on developers)  \n",
      "2. Which aspects interest you most?  \n",
      "   a. High‑level concept & benefits  \n",
      "   b. Detailed architecture, data flow, and transport layers  \n",
      "   c. SDK usage & code snippets  \n",
      "   d. Security / compliance considerations  \n",
      "   e. Real‑world adoption stories and roadmap  \n",
      "3. Do you need comparisons with alternative approaches (e.g., “function calling,” LangChain tool interfaces, RAG pipelines without MCP)?  \n",
      "4. Any length or format constraints (slide deck notes, white‑paper style, quick FAQ)?  \n",
      "5. Timeline sensitivity: should we cover only the open‑sourced spec (Nov 2024) or include 2025 Microsoft integrations as well?\n",
      "\n",
      "Let me know, and I’ll tailor the research plan accordingly.\n"
     ]
    }
   ],
   "source": [
    "messages = agent.get_state(thread_config).values['messages']\n",
    "messages[-1].pretty_print()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "================================\u001b[1m Human Message \u001b[0m=================================\n",
      "\n",
      "What is model context protocol?\n",
      "==================================\u001b[1m Ai Message \u001b[0m==================================\n",
      "Tool Calls:\n",
      "  tavily_search (call_UAovh3IIwOUUGLXUu56A6VhD)\n",
      " Call ID: call_UAovh3IIwOUUGLXUu56A6VhD\n",
      "  Args:\n",
      "    queries: ['\"model context protocol\" MCP']\n",
      "=================================\u001b[1m Tool Message \u001b[0m=================================\n",
      "Name: tavily_search\n",
      "\n",
      "Search results: \n",
      "\n",
      "\n",
      "\n",
      "--- SOURCE 1: Unleashing the Power of Model Context Protocol (MCP): A Game-Changer in ... ---\n",
      "URL: https://techcommunity.microsoft.com/blog/educatordeveloperblog/unleashing-the-power-of-model-context-protocol-mcp-a-game-changer-in-ai-integrat/4397564\n",
      "\n",
      "SUMMARY:\n",
      "What is Model Context Protocol (MCP)? MCP is a protocol designed to enable AI models, such as Azure OpenAI models, to interact seamlessly with external tools and services. Think of MCP as a universal USB-C connector for AI, allowing language models to fetch information, interact with APIs, and execute tasks beyond their built-in knowledge. Key\n",
      "\n",
      "FULL CONTENT:\n",
      "Published Time: 3/27/2025, 7:57:10 AM\n",
      "Unleashing the Power of Model Context Protocol (MCP): A Game-Changer in AI Integration | Microsoft Community Hub\n",
      "Skip to content\n",
      "Tech CommunityCommunity Hubs\n",
      "Products\n",
      "Topics\n",
      "BlogsEvents\n",
      "Microsoft Learn\n",
      "Lounge\n",
      "More\n",
      "RegisterSign In\n",
      "\n",
      "\n",
      "Microsoft Community Hub\n",
      "\n",
      "\n",
      "CommunitiesTopics\n",
      "\n",
      "\n",
      "Education Sector\n",
      "\n",
      "\n",
      "Educator Developer Blog\n",
      "\n",
      "\n",
      "Report\n",
      "Connect with experts and redefine what’s possible at work – join us at the Microsoft 365 Community Conference May 6-8. Learn more >\n",
      "Educator Developer Blog\n",
      "Blog Post\n",
      "Educator Developer Blog\n",
      "4 MIN READ\n",
      "Unleashing the Power of Model Context Protocol (MCP): A Game-Changer in AI Integration\n",
      "\n",
      "Sharda_Kaur\n",
      "Brass Contributor\n",
      "Mar 27, 2025\n",
      "Artificial Intelligence is evolving rapidly, and one of the most pressing challenges is enabling AI models to interact effectively with external tools, data sources, and APIs. The Model Context Protocol (MCP) solves this problem by acting as a bridge between AI models and external services, creating a standardized communication framework that enhances tool integration, accessibility, and AI reasoning capabilities.\n",
      "What is Model Context Protocol (MCP)?\n",
      "MCP is a protocol designed to enable AI models, such as Azure OpenAI models, to interact seamlessly with external tools and services. Think of MCP as a universal USB-C connector for AI, allowing language models to fetch information, interact with APIs, and execute tasks beyond their built-in knowledge.\n",
      "\n",
      "Key Features of MCP\n",
      "\n",
      "Standardized Communication – MCP provides a structured way for AI models to interact with various tools.\n",
      "Tool Access & Expansion – AI assistants can now utilize external tools for real-time insights.\n",
      "Secure & Scalable – Enables safe and scalable integration with enterprise applications.\n",
      "Multi-Modal Integration – Supports STDIO, SSE (Server-Sent Events), and WebSocket communication methods.\n",
      "\n",
      "MCP Architecture & How It Works\n",
      "MCP follows a client-server architecture that allows AI models to interact with external tools efficiently. Here’s how it works:\n",
      "Components of MCP\n",
      "\n",
      "MCP Host – The AI model (e.g., Azure OpenAI GPT) requesting data or actions.\n",
      "MCP Client – An intermediary service that forwards the AI model's requests to MCP servers.\n",
      "MCP Server – Lightweight applications that expose specific capabilities (APIs, databases, files, etc.).\n",
      "Data Sources – Various backend systems, including local storage, cloud databases, and external APIs.\n",
      "\n",
      "Data Flow in MCP\n",
      "\n",
      "The AI model sends a request (e.g., \"fetch user profile data\").\n",
      "The MCP client forwards the request to the appropriate MCP server.\n",
      "The MCP server retrieves the required data from a database or API.\n",
      "The response is sent back to the AI model via the MCP client.\n",
      "\n",
      "Integrating MCP with Azure OpenAI Services\n",
      "Microsoft has integrated MCP with Azure OpenAI Services, allowing GPT models to interact with external services and fetch live data. This means AI models are no longer limited to static knowledge but can access real-time information.\n",
      "Benefits of Azure OpenAI Services + MCP Integration\n",
      "✔ Real-time Data Fetching – AI assistants can retrieve fresh information from APIs, databases, and internal systems.\n",
      "✔ Contextual AI Responses – Enhances AI responses by providing accurate, up-to-date information.\n",
      "✔ Enterprise-Ready – Secure and scalable for business applications, including finance, healthcare, and retail.\n",
      "Hands-On Tools for MCP Implementation\n",
      "To implement MCP effectively, Microsoft provides two powerful tools: Semantic Workbench and AI Gateway.\n",
      "Microsoft Semantic Workbench\n",
      "A development environment for prototyping AI-powered assistants and integrating MCP-based functionalities.\n",
      "Features:\n",
      "\n",
      "Build and test multi-agent AI assistants.\n",
      "Configure settings and interactions between AI models and external tools.\n",
      "Supports GitHub Codespaces for cloud-based development.\n",
      "\n",
      "Explore Semantic Workbench\n",
      "Workbench interface examples\n",
      "\n",
      "Microsoft AI Gateway\n",
      "A plug-and-play interface that allows developers to experiment with MCP using Azure API Management.\n",
      "Features:\n",
      "\n",
      "Credential Manager – Securely handle API credentials.\n",
      "Live Experimentation – Test AI model interactions with external tools.\n",
      "Pre-built Labs – Hands-on learning for developers.\n",
      "\n",
      "Explore AI Gateway\n",
      "Setting Up MCP with Azure OpenAI Services\n",
      "Step 1: Create a Virtual Environment\n",
      "First, create a virtual environment using Python:\n",
      "python\n",
      "python -m venv .venv\n",
      "Activate the environment:\n",
      "# Windows\n",
      "python\n",
      "venv\\Scripts\\activate\n",
      "# MacOS/Linux\n",
      "python\n",
      "source .venv/bin/activate\n",
      "Step 2: Install Required Libraries\n",
      "Create a requirements.txt file and add the following dependencies:\n",
      "```python\n",
      "langchain-mcp-adapters\n",
      "langgraph\n",
      "langchain-openai\n",
      "```\n",
      "Then, install the required libraries:\n",
      "python\n",
      "pip install -r requirements.txt\n",
      "Step 3: Set Up OpenAI API Key\n",
      "Ensure you have your OpenAI API key set up:\n",
      "# Windows\n",
      "python\n",
      "setx OPENAI_API_KEY \"<your_api_key>\n",
      "# MacOS/Linux\n",
      "python\n",
      "export OPENAI_API_KEY=<your_api_key>\n",
      "Building an MCP Server\n",
      "This server performs basic mathematical operations like addition and multiplication.\n",
      "Create the Server File\n",
      "First, create a new Python file:\n",
      "python\n",
      "touch math_server.py\n",
      "Then, implement the server:\n",
      "python\n",
      "from mcp.server.fastmcp import FastMCP\n",
      "```python\n",
      "Initialize the server\n",
      "mcp = FastMCP(\"Math\")\n",
      "MCP.tool()\n",
      "def add(a: int, b: int) -> int:\n",
      "return a + b\n",
      "\n",
      "MCP.tool()\n",
      "def multiply(a: int, b: int) -> int:\n",
      "return a * b\n",
      "\n",
      "if name == \"main\":\n",
      "mcp.run(transport=\"stdio\")\n",
      "\n",
      "```\n",
      "Your MCP server is now ready to run.\n",
      "Building an MCP Client\n",
      "This client connects to the MCP server and interacts with it.\n",
      "Create the Client File\n",
      "First, create a new file:\n",
      "python\n",
      "touch client.py\n",
      "Then, implement the client:\n",
      "```python\n",
      "import asyncio\n",
      "from mcp import ClientSession, StdioServerParameters\n",
      "from langchain_openai import ChatOpenAI\n",
      "from mcp.client.stdio import stdio_client\n",
      "Define server parameters\n",
      "server_params = StdioServerParameters(\n",
      "command=\"python\",\n",
      "\n",
      "args=[\"math_server.py\"],\n",
      "\n",
      ")\n",
      "Define the model\n",
      "model = ChatOpenAI(model=\"gpt-4o\")\n",
      "async def run_agent():\n",
      "async with stdio_client(server_params) as (read, write):\n",
      "\n",
      "    async with ClientSession(read, write) as session:\n",
      "\n",
      "        await session.initialize()\n",
      "\n",
      "        tools = await load_mcp_tools(session)\n",
      "\n",
      "        agent = create_react_agent(model, tools)\n",
      "\n",
      "        agent_response = await agent.ainvoke({\"messages\": \"what's (4 + 6) x 14?\"})\n",
      "\n",
      "        return agent_response[\"messages\"][3].content\n",
      "\n",
      "if name == \"main\":\n",
      "result = asyncio.run(run_agent())\n",
      "\n",
      "print(result)\n",
      "\n",
      "```\n",
      "Your client is now set up and ready to interact with the MCP server.\n",
      "Running the MCP Server and Client\n",
      "Step 1: Start the MCP Server\n",
      "Open a terminal and run:\n",
      "python\n",
      "python math_server.py\n",
      "This starts the MCP server, making it available for client connections.\n",
      "Step 2: Run the MCP Client\n",
      "In another terminal, run:\n",
      "python\n",
      "python client.py\n",
      "Expected Output\n",
      "140\n",
      "This means the AI agent correctly computed (4 + 6) x 14 using both the MCP server and GPT-4o.\n",
      "Conclusion\n",
      "Integrating MCP with Azure OpenAI Services enables AI applications to securely interact with external tools, enhancing functionality beyond text-based responses. With standardized communication and improved AI capabilities, developers can build smarter and more interactive AI-powered solutions. By following this guide, you can set up an MCP server and client, unlocking the full potential of AI with structured external interactions.\n",
      "Next Steps:\n",
      "\n",
      "Explore more MCP tools and integrations.\n",
      "Extend your MCP setup to work with additional APIs.\n",
      "Deploy your solution in a cloud environment for broader accessibility.\n",
      "\n",
      "For further details, visit the GitHub repository for MCP integration examples and best practices.\n",
      "\n",
      "MCP GitHub Repository\n",
      "MCP Documentation\n",
      "Semantic Workbench\n",
      "AI Gateway\n",
      "MCP Video Walkthrough\n",
      "MCP Blog\n",
      "MCP Github End to End Demo\n",
      "\n",
      "Updated Mar 27, 2025\n",
      "Version 1.0\n",
      "azure\n",
      "Azure AI Agents\n",
      "Azure AI Model\n",
      "mcp\n",
      "openai\n",
      "Semantic Kernal\n",
      "Semantic Search\n",
      "Like\n",
      "2\n",
      "Comment\n",
      "\n",
      "Sharda_Kaur\n",
      "Brass Contributor\n",
      "Joined December 16, 2023\n",
      "Send Message\n",
      "View Profile\n",
      "\n",
      "Educator Developer Blog\n",
      "Follow this blog board to get notified when there's new activity\n",
      "Share\n",
      "\n",
      "\n",
      "\n",
      "\n",
      "\n",
      "\n",
      "\n",
      "\n",
      "What's new\n",
      "\n",
      "Surface Pro 9\n",
      "Surface Laptop 5\n",
      "Surface Studio 2+\n",
      "Surface Laptop Go 2\n",
      "Surface Laptop Studio\n",
      "Surface Duo 2\n",
      "Microsoft 365\n",
      "Windows 11 apps\n",
      "\n",
      "Microsoft Store\n",
      "\n",
      "Account profile\n",
      "Download Center\n",
      "Microsoft Store support\n",
      "Returns\n",
      "Order tracking\n",
      "Virtual workshops and training\n",
      "Microsoft Store Promise\n",
      "Flexible Payments\n",
      "\n",
      "Education\n",
      "\n",
      "Microsoft in education\n",
      "Devices for education\n",
      "Microsoft Teams for Education\n",
      "Microsoft 365 Education\n",
      "Education consultation appointment\n",
      "Educator training and development\n",
      "Deals for students and parents\n",
      "Azure for students\n",
      "\n",
      "Business\n",
      "\n",
      "Microsoft Cloud\n",
      "Microsoft Security\n",
      "Dynamics 365\n",
      "Microsoft 365\n",
      "Microsoft Power Platform\n",
      "Microsoft Teams\n",
      "Microsoft Industry\n",
      "Small Business\n",
      "\n",
      "Developer & IT\n",
      "\n",
      "Azure\n",
      "Developer Center\n",
      "Documentation\n",
      "Microsoft Learn\n",
      "Microsoft Tech Community\n",
      "Azure Marketplace\n",
      "AppSource\n",
      "Visual Studio\n",
      "\n",
      "Company\n",
      "\n",
      "Careers\n",
      "About Microsoft\n",
      "Company news\n",
      "Privacy at Microsoft\n",
      "Investors\n",
      "Diversity and inclusion\n",
      "Accessibility\n",
      "Sustainability\n",
      "\n",
      "Your Privacy Choices\n",
      "\n",
      "Sitemap\n",
      "Contact Microsoft\n",
      "Privacy\n",
      "Manage cookies\n",
      "Terms of use\n",
      "Trademarks\n",
      "Safety & eco\n",
      "About our ads\n",
      "© Microsoft 2024\n",
      "\n",
      "\"}},\"componentScriptGroups({\\\"componentId\\\":\\\"custom.widget.Social_Sharing\\\"})\":{\"__typename\":\"ComponentScriptGroups\",\"scriptGroups\":{\"__typename\":\"ComponentScriptGroupsDefinition\",\"afterInteractive\":{\"__typename\":\"PageScriptGroupDefinition\",\"group\":\"AFTER_INTERACTIVE\",\"scriptIds\":[]},\"lazyOnLoad\":{\"__typename\":\"PageScriptGroupDefinition\",\"group\":\"LAZY_ON_LOAD\",\"scriptIds\":[]}},\"componentScripts\":[]},\"component({\\\"componentId\\\":\\\"custom.widget.MicrosoftFooter\\\"})\":{\"__typename\":\"Component\",\"render({\\\"context\\\":{\\\"component\\\":{\\\"entities\\\":[],\\\"props\\\":{}},\\\"page\\\":{\\\"entities\\\":[\\\"board:EducatorDeveloperBlog\\\",\\\"message:4397564\\\"],\\\"name\\\":\\\"BlogMessagePage\\\",\\\"props\\\":{},\\\"url\\\":\\\"https://techcommunity.microsoft.com/blog/educatordeveloperblog/unleashing-the-power-of-model-context-protocol-mcp-a-game-changer-in-ai-integrat/4397564\\\"}}})\":{\"__typename\":\"ComponentRenderResult\",\"html\":\"\n",
      "What's new\n",
      "\n",
      "Surface Pro 9\n",
      "Surface Laptop 5\n",
      "Surface Studio 2+\n",
      "Surface Laptop Go 2\n",
      "Surface Laptop Studio\n",
      "Surface Duo 2\n",
      "Microsoft 365\n",
      "Windows 11 apps\n",
      "\n",
      "Microsoft Store\n",
      "\n",
      "Account profile\n",
      "Download Center\n",
      "Microsoft Store support\n",
      "Returns\n",
      "Order tracking\n",
      "Virtual workshops and training\n",
      "Microsoft Store Promise\n",
      "Flexible Payments\n",
      "\n",
      "Education\n",
      "\n",
      "Microsoft in education\n",
      "Devices for education\n",
      "Microsoft Teams for Education\n",
      "Microsoft 365 Education\n",
      "Education consultation appointment\n",
      "Educator training and development\n",
      "Deals for students and parents\n",
      "Azure for students\n",
      "\n",
      "Business\n",
      "\n",
      "Microsoft Cloud\n",
      "Microsoft Security\n",
      "Dynamics 365\n",
      "Microsoft 365\n",
      "Microsoft Power Platform\n",
      "Microsoft Teams\n",
      "Microsoft Industry\n",
      "Small Business\n",
      "\n",
      "Developer & IT\n",
      "\n",
      "Azure\n",
      "Developer Center\n",
      "Documentation\n",
      "Microsoft Learn\n",
      "Microsoft Tech Community\n",
      "Azure Marketplace\n",
      "AppSource\n",
      "Visual Studio\n",
      "\n",
      "Company\n",
      "\n",
      "Careers\n",
      "About Microsoft\n",
      "Company news\n",
      "Privacy at Microsoft\n",
      "Investors\n",
      "Diversity and inclusion\n",
      "Accessibility\n",
      "Sustainability\n",
      "\n",
      "Your Privacy Choices\n",
      "\n",
      "Sitemap\n",
      "Contact Microsoft\n",
      "Privacy\n",
      "Manage cookies\n",
      "Terms of use\n",
      "Trademarks\n",
      "Safety & eco\n",
      "About our ads\n",
      "© Microsoft 2024\n",
      "\n",
      "\"}},\"componentScriptGroups({\\\"componentId\\\":\\\"custom.widget.MicrosoftFooter\\\"})\":{\"__typename\":\"ComponentScriptGroups\",\"scriptGroups\":{\"__typename\":\"ComponentScriptGroupsDefinition\",\"afterInteractive\":{\"__typename\":\"PageScriptGroupDefinition\",\"group\":\"AFTER_INTERACTIVE\",\"scriptIds\":[]},\"lazyOnLoad\":{\"__typename\":\"PageScriptGroupDefinition\",\"group\":\"LAZY_ON_LOAD\",\"scriptIds\":[]}},\"componentScripts\":[]},\"cachedText({\\\"lastModified\\\":\\\"1743151752454\\\",\\\"locale\\\":\\\"en-US\\\",\\\"namespaces\\\":[\\\"components/community/NavbarDropdownToggle\\\"]})\":[{\"__ref\":\"CachedAsset:text:en_US-components/community/NavbarDropdownToggle-1743151752454\"}],\"cachedText({\\\"lastModified\\\":\\\"1743151752454\\\",\\\"locale\\\":\\\"en-US\\\",\\\"namespaces\\\":[\\\"shared/client/components/common/QueryHandler\\\"]})\":[{\"__ref\":\"CachedAsset:text:en_US-shared/client/components/common/QueryHandler-1743151752454\"}],\"cachedText({\\\"lastModified\\\":\\\"1743151752454\\\",\\\"locale\\\":\\\"en-US\\\",\\\"namespaces\\\":[\\\"components/messages/MessageCoverImage\\\"]})\":[{\"__ref\":\"CachedAsset:text:en_US-components/messages/MessageCoverImage-1743151752454\"}],\"cachedText({\\\"lastModified\\\":\\\"1743151752454\\\",\\\"locale\\\":\\\"en-US\\\",\\\"namespaces\\\":[\\\"shared/client/components/nodes/NodeTitle\\\"]})\":[{\"__ref\":\"CachedAsset:text:en_US-shared/client/components/nodes/NodeTitle-1743151752454\"}],\"cachedText({\\\"lastModified\\\":\\\"1743151752454\\\",\\\"locale\\\":\\\"en-US\\\",\\\"namespaces\\\":[\\\"components/messages/MessageTimeToRead\\\"]})\":[{\"__ref\":\"CachedAsset:text:en_US-components/messages/MessageTimeToRead-1743151752454\"}],\"cachedText({\\\"lastModified\\\":\\\"1743151752454\\\",\\\"locale\\\":\\\"en-US\\\",\\\"namespaces\\\":[\\\"components/messages/MessageSubject\\\"]})\":[{\"__ref\":\"CachedAsset:text:en_US-components/messages/MessageSubject-1743151752454\"}],\"cachedText({\\\"lastModified\\\":\\\"1743151752454\\\",\\\"locale\\\":\\\"en-US\\\",\\\"namespaces\\\":[\\\"components/users/UserLink\\\"]})\":[{\"__ref\":\"CachedAsset:text:en_US-components/users/UserLink-1743151752454\"}],\"cachedText({\\\"lastModified\\\":\\\"1743151752454\\\",\\\"locale\\\":\\\"en-US\\\",\\\"namespaces\\\":[\\\"shared/client/components/users/UserRank\\\"]})\":[{\"__ref\":\"CachedAsset:text:en_US-shared/client/components/users/UserRank-1743151752454\"}],\"cachedText({\\\"lastModified\\\":\\\"1743151752454\\\",\\\"locale\\\":\\\"en-US\\\",\\\"namespaces\\\":[\\\"components/messages/MessageTime\\\"]})\":[{\"__ref\":\"CachedAsset:text:en_US-components/messages/MessageTime-1743151752454\"}],\"cachedText({\\\"lastModified\\\":\\\"1743151752454\\\",\\\"locale\\\":\\\"en-US\\\",\\\"namespaces\\\":[\\\"components/messages/MessageBody\\\"]})\":[{\"__ref\":\"CachedAsset:text:en_US-components/messages/MessageBody-1743151752454\"}],\"cachedText({\\\"lastModified\\\":\\\"1743151752454\\\",\\\"locale\\\":\\\"en-US\\\",\\\"namespaces\\\":[\\\"components/messages/MessageCustomFields\\\"]})\":[{\"__ref\":\"CachedAsset:text:en_US-components/messages/MessageCustomFields-1743151752454\"}],\"cachedText({\\\"lastModified\\\":\\\"1743151752454\\\",\\\"locale\\\":\\\"en-US\\\",\\\"namespaces\\\":[\\\"components/messages/MessageRevision\\\"]})\":[{\"__ref\":\"CachedAsset:text:en_US-components/messages/MessageRevision-1743151752454\"}],\"cachedText({\\\"lastModified\\\":\\\"1743151752454\\\",\\\"locale\\\":\\\"en-US\\\",\\\"namespaces\\\":[\\\"components/messages/MessageReplyButton\\\"]})\":[{\"__ref\":\"CachedAsset:text:en_US-components/messages/MessageReplyButton-1743151752454\"}],\"cachedText({\\\"lastModified\\\":\\\"1743151752454\\\",\\\"locale\\\":\\\"en-US\\\",\\\"namespaces\\\":[\\\"components/messages/MessageAuthorBio\\\"]})\":[{\"__ref\":\"CachedAsset:text:en_US-components/messages/MessageAuthorBio-1743151752454\"}],\"cachedText({\\\"lastModified\\\":\\\"1743151752454\\\",\\\"locale\\\":\\\"en-US\\\",\\\"namespaces\\\":[\\\"shared/client/components/users/UserAvatar\\\"]})\":[{\"__ref\":\"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1743151752454\"}],\"cachedText({\\\"lastModified\\\":\\\"1743151752454\\\",\\\"locale\\\":\\\"en-US\\\",\\\"namespaces\\\":[\\\"shared/client/components/ranks/UserRankLabel\\\"]})\":[{\"__ref\":\"CachedAsset:text:en_US-shared/client/components/ranks/UserRankLabel-1743151752454\"}],\"cachedText({\\\"lastModified\\\":\\\"1743151752454\\\",\\\"locale\\\":\\\"en-US\\\",\\\"namespaces\\\":[\\\"components/users/UserRegistrationDate\\\"]})\":[{\"__ref\":\"CachedAsset:text:en_US-components/users/UserRegistrationDate-1743151752454\"}],\"cachedText({\\\"lastModified\\\":\\\"1743151752454\\\",\\\"locale\\\":\\\"en-US\\\",\\\"namespaces\\\":[\\\"shared/client/components/nodes/NodeAvatar\\\"]})\":[{\"__ref\":\"CachedAsset:text:en_US-shared/client/components/nodes/NodeAvatar-1743151752454\"}],\"cachedText({\\\"lastModified\\\":\\\"1743151752454\\\",\\\"locale\\\":\\\"en-US\\\",\\\"namespaces\\\":[\\\"shared/client/components/nodes/NodeDescription\\\"]})\":[{\"__ref\":\"CachedAsset:text:en_US-shared/client/components/nodes/NodeDescription-1743151752454\"}],\"cachedText({\\\"lastModified\\\":\\\"1743151752454\\\",\\\"locale\\\":\\\"en-US\\\",\\\"namespaces\\\":[\\\"components/tags/TagView/TagViewChip\\\"]})\":[{\"__ref\":\"CachedAsset:text:en_US-components/tags/TagView/TagViewChip-1743151752454\"}],\"cachedText({\\\"lastModified\\\":\\\"1743151752454\\\",\\\"locale\\\":\\\"en-US\\\",\\\"namespaces\\\":[\\\"shared/client/components/nodes/NodeIcon\\\"]})\":[{\"__ref\":\"CachedAsset:text:en_US-shared/client/components/nodes/NodeIcon-1743151752454\"}]},\"CachedAsset:pages-1743057517558\":{\"__typename\":\"CachedAsset\",\"id\":\"pages-1743057517558\",\"value\":[{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"BlogViewAllPostsPage\",\"type\":\"BLOG\",\"urlPath\":\"/category/:categoryId/blog/:boardId/all-posts/(/:after|/:before)?\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"CasePortalPage\",\"type\":\"CASE_PORTAL\",\"urlPath\":\"/caseportal\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"CreateGroupHubPage\",\"type\":\"GROUP_HUB\",\"urlPath\":\"/groups/create\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"CaseViewPage\",\"type\":\"CASE_DETAILS\",\"urlPath\":\"/case/:caseId/:caseNumber\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"InboxPage\",\"type\":\"COMMUNITY\",\"urlPath\":\"/inbox\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"HelpFAQPage\",\"type\":\"COMMUNITY\",\"urlPath\":\"/help\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"IdeaMessagePage\",\"type\":\"IDEA_POST\",\"urlPath\":\"/idea/:boardId/:messageSubject/:messageId\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"IdeaViewAllIdeasPage\",\"type\":\"IDEA\",\"urlPath\":\"/category/:categoryId/ideas/:boardId/all-ideas/(/:after|/:before)?\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"LoginPage\",\"type\":\"USER\",\"urlPath\":\"/signin\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"BlogPostPage\",\"type\":\"BLOG\",\"urlPath\":\"/category/:categoryId/blogs/:boardId/create\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"UserBlogPermissions.Page\",\"type\":\"COMMUNITY\",\"urlPath\":\"/c/user-blog-permissions/page\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"ThemeEditorPage\",\"type\":\"COMMUNITY\",\"urlPath\":\"/designer/themes\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"TkbViewAllArticlesPage\",\"type\":\"TKB\",\"urlPath\":\"/category/:categoryId/kb/:boardId/all-articles/(/:after|/:before)?\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1730819800000,\"localOverride\":null,\"page\":{\"id\":\"AllEvents\",\"type\":\"CUSTOM\",\"urlPath\":\"/Events\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"OccasionEditPage\",\"type\":\"EVENT\",\"urlPath\":\"/event/:boardId/:messageSubject/:messageId/edit\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"OAuthAuthorizationAllowPage\",\"type\":\"USER\",\"urlPath\":\"/auth/authorize/allow\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"PageEditorPage\",\"type\":\"COMMUNITY\",\"urlPath\":\"/designer/pages\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"PostPage\",\"type\":\"COMMUNITY\",\"urlPath\":\"/category/:categoryId/:boardId/create\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"ForumBoardPage\",\"type\":\"FORUM\",\"urlPath\":\"/category/:categoryId/discussions/:boardId\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"TkbBoardPage\",\"type\":\"TKB\",\"urlPath\":\"/category/:categoryId/kb/:boardId\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"EventPostPage\",\"type\":\"EVENT\",\"urlPath\":\"/category/:categoryId/events/:boardId/create\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"UserBadgesPage\",\"type\":\"COMMUNITY\",\"urlPath\":\"/users/:login/:userId/badges\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"GroupHubMembershipAction\",\"type\":\"GROUP_HUB\",\"urlPath\":\"/membership/join/:nodeId/:membershipType\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"MaintenancePage\",\"type\":\"COMMUNITY\",\"urlPath\":\"/maintenance\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"IdeaReplyPage\",\"type\":\"IDEA_REPLY\",\"urlPath\":\"/idea/:boardId/:messageSubject/:messageId/comments/:replyId\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"UserSettingsPage\",\"type\":\"USER\",\"urlPath\":\"/mysettings/:userSettingsTab\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"GroupHubsPage\",\"type\":\"GROUP_HUB\",\"urlPath\":\"/groups\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"ForumPostPage\",\"type\":\"FORUM\",\"urlPath\":\"/category/:categoryId/discussions/:boardId/create\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"OccasionRsvpActionPage\",\"type\":\"OCCASION\",\"urlPath\":\"/event/:boardId/:messageSubject/:messageId/rsvp/:responseType\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"VerifyUserEmailPage\",\"type\":\"USER\",\"urlPath\":\"/verifyemail/:userId/:verifyEmailToken\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"AllOccasionsPage\",\"type\":\"OCCASION\",\"urlPath\":\"/category/:categoryId/events/:boardId/all-events/(/:after|/:before)?\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"EventBoardPage\",\"type\":\"EVENT\",\"urlPath\":\"/category/:categoryId/events/:boardId\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"TkbReplyPage\",\"type\":\"TKB_REPLY\",\"urlPath\":\"/kb/:boardId/:messageSubject/:messageId/comments/:replyId\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"IdeaBoardPage\",\"type\":\"IDEA\",\"urlPath\":\"/category/:categoryId/ideas/:boardId\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"CommunityGuideLinesPage\",\"type\":\"COMMUNITY\",\"urlPath\":\"/communityguidelines\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"CaseCreatePage\",\"type\":\"SALESFORCE_CASE_CREATION\",\"urlPath\":\"/caseportal/create\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"TkbEditPage\",\"type\":\"TKB\",\"urlPath\":\"/kb/:boardId/:messageSubject/:messageId/edit\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"ForgotPasswordPage\",\"type\":\"USER\",\"urlPath\":\"/forgotpassword\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"IdeaEditPage\",\"type\":\"IDEA\",\"urlPath\":\"/idea/:boardId/:messageSubject/:messageId/edit\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"TagPage\",\"type\":\"COMMUNITY\",\"urlPath\":\"/tag/:tagName\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"BlogBoardPage\",\"type\":\"BLOG\",\"urlPath\":\"/category/:categoryId/blog/:boardId\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"OccasionMessagePage\",\"type\":\"OCCASION_TOPIC\",\"urlPath\":\"/event/:boardId/:messageSubject/:messageId\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"ManageContentPage\",\"type\":\"COMMUNITY\",\"urlPath\":\"/managecontent\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"ClosedMembershipNodeNonMembersPage\",\"type\":\"GROUP_HUB\",\"urlPath\":\"/closedgroup/:groupHubId\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"CommunityPage\",\"type\":\"COMMUNITY\",\"urlPath\":\"/\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"ForumMessagePage\",\"type\":\"FORUM_TOPIC\",\"urlPath\":\"/discussions/:boardId/:messageSubject/:messageId\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"IdeaPostPage\",\"type\":\"IDEA\",\"urlPath\":\"/category/:categoryId/ideas/:boardId/create\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1730819800000,\"localOverride\":null,\"page\":{\"id\":\"CommunityHub.Page\",\"type\":\"CUSTOM\",\"urlPath\":\"/Directory\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"BlogMessagePage\",\"type\":\"BLOG_ARTICLE\",\"urlPath\":\"/blog/:boardId/:messageSubject/:messageId\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"RegistrationPage\",\"type\":\"USER\",\"urlPath\":\"/register\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"EditGroupHubPage\",\"type\":\"GROUP_HUB\",\"urlPath\":\"/group/:groupHubId/edit\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"ForumEditPage\",\"type\":\"FORUM\",\"urlPath\":\"/discussions/:boardId/:messageSubject/:messageId/edit\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"ResetPasswordPage\",\"type\":\"USER\",\"urlPath\":\"/resetpassword/:userId/:resetPasswordToken\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1730819800000,\"localOverride\":null,\"page\":{\"id\":\"AllBlogs.Page\",\"type\":\"CUSTOM\",\"urlPath\":\"/blogs\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"TkbMessagePage\",\"type\":\"TKB_ARTICLE\",\"urlPath\":\"/kb/:boardId/:messageSubject/:messageId\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"BlogEditPage\",\"type\":\"BLOG\",\"urlPath\":\"/blog/:boardId/:messageSubject/:messageId/edit\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"ManageUsersPage\",\"type\":\"USER\",\"urlPath\":\"/users/manage/:tab?/:manageUsersTab?\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"ForumReplyPage\",\"type\":\"FORUM_REPLY\",\"urlPath\":\"/discussions/:boardId/:messageSubject/:messageId/replies/:replyId\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"PrivacyPolicyPage\",\"type\":\"COMMUNITY\",\"urlPath\":\"/privacypolicy\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"NotificationPage\",\"type\":\"COMMUNITY\",\"urlPath\":\"/notifications\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"UserPage\",\"type\":\"USER\",\"urlPath\":\"/users/:login/:userId\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"OccasionReplyPage\",\"type\":\"OCCASION_REPLY\",\"urlPath\":\"/event/:boardId/:messageSubject/:messageId/comments/:replyId\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"ManageMembersPage\",\"type\":\"GROUP_HUB\",\"urlPath\":\"/group/:groupHubId/manage/:tab?\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"SearchResultsPage\",\"type\":\"COMMUNITY\",\"urlPath\":\"/search\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"BlogReplyPage\",\"type\":\"BLOG_REPLY\",\"urlPath\":\"/blog/:boardId/:messageSubject/:messageId/replies/:replyId\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageResource\"},{\"lastUpdatedTime\":1743057517558,\"localOverride\":null,\"page\":{\"id\":\"GroupHubPage\",\"type\":\"GROUP_HUB\",\"urlPath\":\"/group/:groupHubId\",\"__typename\":\"PageDescriptor\"},\"__typename\":\"PageR\n",
      "\n",
      "--------------------------------------------------------------------------------\n",
      "\n",
      "\n",
      "--- SOURCE 2: Introducing the Model Context Protocol \\ Anthropic ---\n",
      "URL: https://www.anthropic.com/news/model-context-protocol\n",
      "\n",
      "SUMMARY:\n",
      "Today, we're open-sourcing the Model Context Protocol (MCP), a new standard for connecting AI assistants to the systems where data lives, including content repositories, business tools, and development environments. The Model Context Protocol is an open standard that enables developers to build secure, two-way connections between their data sources and AI-powered tools. Early adopters like Block and Apollo have integrated MCP into their systems, while development tools companies including Zed, Replit, Codeium, and Sourcegraph are working with MCP to enhance their platforms—enabling AI agents to better retrieve relevant information to further understand the context around a coding task and produce more nuanced and functional code with fewer attempts. All Claude.ai plans support connecting MCP servers to the Claude Desktop app.\n",
      "\n",
      "FULL CONTENT:\n",
      "Introducing the Model Context Protocol \\ Anthropic\n",
      "Skip to main contentSkip to footer\n",
      "\n",
      "Claude\n",
      "API\n",
      "Research\n",
      "Commitments\n",
      "Learn\n",
      "News\n",
      "Try Claude\n",
      "Announcements\n",
      "Introducing the Model Context Protocol\n",
      "Nov 25, 2024●3 min read\n",
      "\n",
      "Today, we're open-sourcing the Model Context Protocol (MCP), a new standard for connecting AI assistants to the systems where data lives, including content repositories, business tools, and development environments. Its aim is to help frontier models produce better, more relevant responses.\n",
      "As AI assistants gain mainstream adoption, the industry has invested heavily in model capabilities, achieving rapid advances in reasoning and quality. Yet even the most sophisticated models are constrained by their isolation from data—trapped behind information silos and legacy systems. Every new data source requires its own custom implementation, making truly connected systems difficult to scale.\n",
      "MCP addresses this challenge. It provides a universal, open standard for connecting AI systems with data sources, replacing fragmented integrations with a single protocol. The result is a simpler, more reliable way to give AI systems access to the data they need.\n",
      "Model Context Protocol\n",
      "The Model Context Protocol is an open standard that enables developers to build secure, two-way connections between their data sources and AI-powered tools. The architecture is straightforward: developers can either expose their data through MCP servers or build AI applications (MCP clients) that connect to these servers.\n",
      "Today, we're introducing three major components of the Model Context Protocol for developers:\n",
      "\n",
      "The Model Context Protocol specification and SDKs\n",
      "Local MCP server support in the Claude Desktop apps\n",
      "An open-source repository of MCP servers\n",
      "\n",
      "Claude 3.5 Sonnet is adept at quickly building MCP server implementations, making it easy for organizations and individuals to rapidly connect their most important datasets with a range of AI-powered tools. To help developers start exploring, we’re sharing pre-built MCP servers for popular enterprise systems like Google Drive, Slack, GitHub, Git, Postgres, and Puppeteer.\n",
      "Early adopters like Block and Apollo have integrated MCP into their systems, while development tools companies including Zed, Replit, Codeium, and Sourcegraph are working with MCP to enhance their platforms—enabling AI agents to better retrieve relevant information to further understand the context around a coding task and produce more nuanced and functional code with fewer attempts.\n",
      "\"At Block, open source is more than a development model—it’s the foundation of our work and a commitment to creating technology that drives meaningful change and serves as a public good for all,” said Dhanji R. Prasanna, Chief Technology Officer at Block. “Open technologies like the Model Context Protocol are the bridges that connect AI to real-world applications, ensuring innovation is accessible, transparent, and rooted in collaboration. We are excited to partner on a protocol and use it to build agentic systems, which remove the burden of the mechanical so people can focus on the creative.”\n",
      "Instead of maintaining separate connectors for each data source, developers can now build against a standard protocol. As the ecosystem matures, AI systems will maintain context as they move between different tools and datasets, replacing today's fragmented integrations with a more sustainable architecture.\n",
      "Getting started\n",
      "Developers can start building and testing MCP connectors today. All Claude.ai plans support connecting MCP servers to the Claude Desktop app.\n",
      "Claude for Work customers can begin testing MCP servers locally, connecting Claude to internal systems and datasets. We'll soon provide developer toolkits for deploying remote production MCP servers that can serve your entire Claude for Work organization.\n",
      "To start building:\n",
      "\n",
      "Install pre-built MCP servers through the Claude Desktop app\n",
      "Follow our quickstart guide to build your first MCP server\n",
      "Contribute to our open-source repositories of connectors and implementations\n",
      "\n",
      "An open community\n",
      "We’re committed to building MCP as a collaborative, open-source project and ecosystem, and we’re eager to hear your feedback. Whether you’re an AI tool developer, an enterprise looking to leverage existing data, or an early adopter exploring the frontier, we invite you to build the future of context-aware AI together.\n",
      "\n",
      "\n",
      "Product\n",
      "\n",
      "Claude overview\n",
      "Claude team plan\n",
      "Claude enterprise plan\n",
      "Download Claude apps\n",
      "Claude.ai pricing plans\n",
      "Claude.ai login\n",
      "\n",
      "API Platform\n",
      "\n",
      "API overview\n",
      "Developer docs\n",
      "Pricing\n",
      "Console login\n",
      "\n",
      "Research\n",
      "\n",
      "Research overview\n",
      "Economic Index\n",
      "\n",
      "Claude models\n",
      "\n",
      "Claude 3.7 Sonnet\n",
      "Claude 3.5 Haiku\n",
      "Claude 3 Opus\n",
      "\n",
      "Commitments\n",
      "\n",
      "Transparency\n",
      "Responsible scaling policy\n",
      "Security and compliance\n",
      "\n",
      "Solutions\n",
      "\n",
      "Coding\n",
      "\n",
      "Learning resources\n",
      "\n",
      "News\n",
      "Customer stories\n",
      "Engineering at Anthropic\n",
      "\n",
      "Company\n",
      "\n",
      "About us\n",
      "Careers\n",
      "\n",
      "Help and security\n",
      "\n",
      "Status\n",
      "Availability\n",
      "Support center\n",
      "\n",
      "Terms and policies\n",
      "Privacy choices*   Privacy policy\n",
      "*   Responsible disclosure policy\n",
      "*   Terms of service - consumer\n",
      "*   Terms of service - commercial\n",
      "*   Usage policy\n",
      "© 2025 Anthropic PBC\n",
      "\n",
      "\n",
      "--------------------------------------------------------------------------------\n",
      "\n",
      "\n",
      "--- SOURCE 3: Model Context Protocol (MCP) - Anthropic ---\n",
      "URL: https://docs.anthropic.com/en/docs/agents-and-tools/mcp\n",
      "\n",
      "SUMMARY:\n",
      "Model Context Protocol (MCP) - Anthropic Anthropic home page Go to claude.ai Go to claude.ai Model Context Protocol (MCP) Support Intro to Claude Learn about Claude Use cases Build with Claude Develop test cases Tool use (function calling) Claude Code Model Context Protocol (MCP) Using the Evaluation Tool Admin API Claude 3 model card Claude 3.7 system card Model Context Protocol (MCP) MCP is an open protocol that standardizes how applications provide context to LLMs. Think of MCP like a USB-C port for AI applications. Just as USB-C provides a standardized way to connect your devices to various peripherals and accessories, MCP provides a standardized way to connect AI models to different data sources and tools. Computer use (beta)Google Sheets add-on\n",
      "\n",
      "FULL CONTENT:\n",
      "Model Context Protocol (MCP) - Anthropic\n",
      "Anthropic home page\n",
      "English\n",
      "Search...\n",
      "Ctrl K\n",
      "\n",
      "Research\n",
      "News\n",
      "Go to claude.ai\n",
      "Go to claude.ai\n",
      "\n",
      "Search...\n",
      "Navigation\n",
      "Agents and tools\n",
      "Model Context Protocol (MCP)\n",
      "WelcomeUser GuidesAPI ReferencePrompt LibraryRelease Notes\n",
      "\n",
      "Developer Console\n",
      "Developer Discord\n",
      "Support\n",
      "\n",
      "Get started\n",
      "\n",
      "Overview\n",
      "Initial setup\n",
      "Intro to Claude\n",
      "\n",
      "Learn about Claude\n",
      "\n",
      "\n",
      "Use cases\n",
      "\n",
      "\n",
      "Models & pricing\n",
      "\n",
      "\n",
      "Security and compliance\n",
      "\n",
      "\n",
      "Build with Claude\n",
      "\n",
      "Define success criteria\n",
      "Develop test cases\n",
      "Context windows\n",
      "Vision\n",
      "\n",
      "Prompt engineering\n",
      "\n",
      "\n",
      "Extended thinking\n",
      "\n",
      "Multilingual support\n",
      "\n",
      "Tool use (function calling)\n",
      "\n",
      "\n",
      "Prompt caching\n",
      "\n",
      "PDF support\n",
      "Citations\n",
      "Token counting\n",
      "Batch processing\n",
      "Embeddings\n",
      "\n",
      "Agents and tools\n",
      "\n",
      "\n",
      "Claude Code\n",
      "\n",
      "\n",
      "Computer use (beta)\n",
      "\n",
      "Model Context Protocol (MCP)\n",
      "Google Sheets add-on\n",
      "\n",
      "Test and evaluate\n",
      "\n",
      "\n",
      "Strengthen guardrails\n",
      "\n",
      "\n",
      "Using the Evaluation Tool\n",
      "\n",
      "\n",
      "Administration\n",
      "\n",
      "Admin API\n",
      "\n",
      "Resources\n",
      "\n",
      "Glossary\n",
      "Model deprecations\n",
      "System status\n",
      "Claude 3 model card\n",
      "Claude 3.7 system card\n",
      "Anthropic Cookbook\n",
      "Anthropic Courses\n",
      "API features\n",
      "\n",
      "Legal center\n",
      "\n",
      "Anthropic Privacy Policy\n",
      "\n",
      "Agents and tools\n",
      "Model Context Protocol (MCP)\n",
      "MCP is an open protocol that standardizes how applications provide context to LLMs. Think of MCP like a USB-C port for AI applications. Just as USB-C provides a standardized way to connect your devices to various peripherals and accessories, MCP provides a standardized way to connect AI models to different data sources and tools.\n",
      "MCP Documentation ----------------- Learn more about the protocol, how to build servers and clients, and discover those made by others.MCP in Claude Desktop --------------------- Learn how to set up MCP in Claude for Desktop, such as letting Claude read and write files to your computer’s file system.\n",
      "Was this page helpful?\n",
      "YesNo\n",
      "Computer use (beta)Google Sheets add-on\n",
      "xlinkedin\n",
      "\n",
      "--------------------------------------------------------------------------------\n",
      "\n",
      "\n",
      "--- SOURCE 4: Introducing Model Context Protocol (MCP) in Copilot Studio: Simplified ... ---\n",
      "URL: https://www.microsoft.com/en-us/microsoft-copilot/blog/copilot-studio/introducing-model-context-protocol-mcp-in-copilot-studio-simplified-integration-with-ai-apps-and-agents/\n",
      "\n",
      "SUMMARY:\n",
      "Introducing Model Context Protocol (MCP) in Copilot Studio: Simplified Integration with AI Apps and Agents | Microsoft Copilot Blog Microsoft All Microsoft Microsoft Copilot Studio Blog Introducing Model Context Protocol (MCP) in Copilot Studio: Simplified Integration with AI Apps and Agents Introducing Model Context Protocol (MCP) in Copilot Studio: Simplified Integration with AI Apps and Agents That’s why we’re thrilled to announce the first release of Model Context Protocol (MCP) support in Microsoft Copilot Studio. That’s why we’re thrilled to announce the first release of Model Context Protocol (MCP) support in Microsoft Copilot Studio. Learn more about these new capabilities here: Extend your agent with Model Context Protocol (preview) – Microsoft Copilot Studio | Microsoft Learn. Microsoft Copilot Microsoft 365 Copilot\n",
      "\n",
      "FULL CONTENT:\n",
      "Introducing Model Context Protocol (MCP) in Copilot Studio: Simplified Integration with AI Apps and Agents | Microsoft Copilot Blog\n",
      "Skip to main content\n",
      " Microsoft\n",
      "Copilot\n",
      "Copilot\n",
      "Copilot\n",
      "\n",
      "Home\n",
      "\n",
      "Get Started\n",
      "\n",
      "Download the Copilot app\n",
      "Try free version of Copilot\n",
      "For business\n",
      "\n",
      "\n",
      "\n",
      "Products\n",
      "\n",
      "Copilot Labs\n",
      "Copilot in Edge\n",
      "Copilot in Windows\n",
      "Copilot Pro\n",
      "\n",
      "\n",
      "\n",
      "Resources\n",
      "\n",
      "Do more with Copilot\n",
      "AI art prompting guide\n",
      "Copilot blog\n",
      "AI blog\n",
      "AI\n",
      "Learn\n",
      "Build\n",
      "\n",
      "\n",
      "\n",
      "For organizations\n",
      "\n",
      "\n",
      "More\n",
      "\n",
      "\n",
      "All Microsoft\n",
      "\n",
      "\n",
      "Global\n",
      "    ------\n",
      "\n",
      "Microsoft 365\n",
      "Teams\n",
      "Copilot\n",
      "Windows\n",
      "Surface\n",
      "Xbox\n",
      "Deals\n",
      "Small Business\n",
      "Support\n",
      "Software Software\n",
      "\n",
      "\n",
      "Windows Apps\n",
      "AI\n",
      "Outlook\n",
      "OneDrive\n",
      "Microsoft Teams\n",
      "OneNote\n",
      "Microsoft Edge\n",
      "Skype\n",
      "PCs & Devices PCs & Devices\n",
      "\n",
      "\n",
      "Computers\n",
      "Shop Xbox\n",
      "Accessories\n",
      "VR & mixed reality\n",
      "Certified Refurbished\n",
      "Trade-in for cash\n",
      "Entertainment Entertainment\n",
      "\n",
      "\n",
      "Xbox Game Pass Ultimate\n",
      "PC Game Pass\n",
      "Xbox games\n",
      "PC and Windows games\n",
      "Movies & TV\n",
      "Business Business\n",
      "\n",
      "\n",
      "Microsoft Cloud\n",
      "Microsoft Security\n",
      "Dynamics 365\n",
      "Microsoft 365 for business\n",
      "Microsoft Power Platform\n",
      "Windows 365\n",
      "Microsoft Industry\n",
      "Small Business\n",
      "Developer & IT Developer & IT\n",
      "\n",
      "\n",
      "Azure\n",
      "Microsoft Developer\n",
      "Microsoft Learn\n",
      "Explore ISV Success\n",
      "Microsoft Tech Community\n",
      "Azure Marketplace\n",
      "AppSource\n",
      "Visual Studio\n",
      "Other Other\n",
      "\n",
      "\n",
      "Microsoft Rewards\n",
      "Free downloads & security\n",
      "Education\n",
      "Gift cards\n",
      "Licensing\n",
      "Unlocked stories\n",
      "View Sitemap\n",
      "\n",
      "\n",
      "\n",
      "\n",
      "\n",
      "\n",
      "\n",
      "Search Search Microsoft.com\n",
      "\n",
      "No results\n",
      "\n",
      "Cancel\n",
      "Light Dark\n",
      "\n",
      "Home\n",
      "Microsoft Copilot Studio Blog\n",
      "Introducing Model Context Protocol (MCP) in Copilot Studio: Simplified Integration with AI Apps and Agents\n",
      "\n",
      "Search for:  Submit search\n",
      "\n",
      "Published Mar 19, 2025\n",
      "3 min read\n",
      "\n",
      "Introducing Model Context Protocol (MCP) in Copilot Studio: Simplified Integration with AI Apps and Agents\n",
      "By Zankar Desai\n",
      "Share\n",
      "\n",
      "\n",
      "\n",
      "\n",
      "\n",
      "\n",
      "\n",
      "Category\n",
      "\n",
      "Announcements\n",
      "Copilot Studio\n",
      "Extensibility\n",
      "\n",
      "more\n",
      "At Microsoft, we believe in creating tools that empower you to work smarter and more efficiently. That’s why we’re thrilled to announce the first release of Model Context Protocol (MCP) support in Microsoft Copilot Studio. With MCP, you can easily add AI apps and agents into Copilot Studio with just a few clicks. What’s new:\n",
      "At Microsoft, we believe in creating tools that empower you to work smarter and more efficiently. That’s why we’re thrilled to announce the first release of Model Context Protocol (MCP) support in Microsoft Copilot Studio. With MCP, you can easily add AI apps and agents into Copilot Studio with just a few clicks.\n",
      "What’s new: Model Context Protocol integration\n",
      "Model Context Protocol (MCP) enables makers to connect to existing knowledge servers and APIs directly from Copilot Studio. When connecting to an MCP server, actions and knowledge are automatically added to the agent and updated as functionality evolves. This simplifies the process of building agents and reduces time spent maintaining the agents.\n",
      "MCP servers are made available to Copilot Studio using connector infrastructure. This means they can employ enterprise security and governance controls such as Virtual Network integration, Data Loss Prevention controls, multiple authentication methods—all of which are available in this release—while supporting real-time data access for AI-powered agents.\n",
      "MCP enables our customers to:\n",
      "\n",
      "Easily connect to data sources: Whether you have a custom internal API or external data providers, the MCP protocol enables smooth and reliable integration into Copilot Studio.\n",
      "Access the marketplace of existing servers: In addition to custom connectors and integrations, users can now tap into a growing library of pre-built, MCP-enabled connectors available in the marketplace. This capability gives you more ways to connect with other tools and makes using them faster and easier.\n",
      "Flexible action capabilities: MCP servers can dynamically provide tools and data to agents. This enables greater flexibility while reducing maintenance and integration costs.\n",
      "\n",
      "To get started, access your agent in Copilot Studio, select ‘Add an action,’ and search for your MCP server!\n",
      "This offering additionally includes Software Development Kit (SDK) support, enabling further customization and flexibility for your integrations. To create your own Model Context Protocol server, the process can be broken down into three key steps:\n",
      "\n",
      "Create the server: The first step in integrating Copilot Studio with the MCP is to create a server via one of the SDKs that will serve as the foundation for handling your data, models, and interactions. You can tailor the server to your specific needs, such as enabling it to handle custom model types and data formats or to support specific workflows.   \n",
      "Publish through a connector: Once the server is in place, the next step involves creating a custom connector that links your Copilot Studio environment to the model or data source.\n",
      "Consume the data via Copilot Studio: Finally, once the server is set up and the connector is defined, you can begin consuming the data and interacting with the models via Copilot Studio.\n",
      "\n",
      "By following these three steps, you create a streamlined, adaptable integration with Copilot Studio that not only connects systems but also enhances your ability to maintain and scale that integration according to your needs.\n",
      "We support Server-Sent Events (SSE) as the transport mechanism; this feature is currently in environments in preview regions and will be available across all environments shortly.\n",
      "Learn more about these new capabilities here: Extend your agent with Model Context Protocol (preview) – Microsoft Copilot Studio | Microsoft Learn.\n",
      "What’s next?\n",
      "We’re excited about the potential of Model Context Protocol and its ability to transform the way users interact with Copilot Studio. But this is just the beginning. Our team is actively working on additional features and improvements to further enhance the integration experience. Stay tuned for more updates, as we plan to introduce even more ways to connect your data and tools effortlessly into Copilot Studio.\n",
      "We look forward to your feedback and learning more on how this new capability enhances your experience and helps you unlock the full power of Copilot Studio.\n",
      "\n",
      "Extend your agents with Model Context Protocol in Copilot Studio\n",
      "Learn more\n",
      "\n",
      "Zankar Desai\n",
      "See more articles from this author >\n",
      "Related Posts\n",
      "\n",
      "\n",
      "\n",
      "\n",
      "Copilot Studio\n",
      "Mar 11\n",
      "7 min read\n",
      "\n",
      "How to deploy transformational enterprise-wide agents: Microsoft as Customer Zero\n",
      "\n",
      "\n",
      "\n",
      "\n",
      "Copilot Studio\n",
      "Mar 3\n",
      "8 min read\n",
      "\n",
      "What’s new in Copilot Studio: February 2025\n",
      "\n",
      "\n",
      "\n",
      "\n",
      "Copilot Studio\n",
      "Feb 4\n",
      "7 min read\n",
      "\n",
      "What’s new in Copilot Studio: January 2025\n",
      "\n",
      "\n",
      "Try Microsoft 365 Copilot Chat\n",
      "The power of AI wherever you go. Available on desktop and mobile devices.\n",
      "Try Copilot Chat\n",
      "Learn more\n",
      "\n",
      "Connect with us on social\n",
      "\n",
      "X\n",
      "LinkedIn\n",
      "Instagram\n",
      "TikTok\n",
      "\n",
      "What's new\n",
      "\n",
      "Surface Pro\n",
      "Surface Laptop\n",
      "Surface Laptop Studio 2\n",
      "Surface Laptop Go 3\n",
      "Microsoft Copilot\n",
      "AI in Windows\n",
      "Explore Microsoft products\n",
      "Windows 11 apps\n",
      "\n",
      "Microsoft Store\n",
      "\n",
      "Account profile\n",
      "Download Center\n",
      "Microsoft Store support\n",
      "Returns\n",
      "Order tracking\n",
      "Certified Refurbished\n",
      "Microsoft Store Promise\n",
      "Flexible Payments\n",
      "\n",
      "Education\n",
      "\n",
      "Microsoft in education\n",
      "Devices for education\n",
      "Microsoft Teams for Education\n",
      "Microsoft 365 Education\n",
      "How to buy for your school\n",
      "Educator training and development\n",
      "Deals for students and parents\n",
      "Azure for students\n",
      "\n",
      "Business\n",
      "\n",
      "Microsoft Cloud\n",
      "Microsoft Security\n",
      "Dynamics 365\n",
      "Microsoft 365\n",
      "Microsoft Power Platform\n",
      "Microsoft Teams\n",
      "Microsoft 365 Copilot\n",
      "Small Business\n",
      "\n",
      "Developer & IT\n",
      "\n",
      "Azure\n",
      "Microsoft Developer\n",
      "Microsoft Learn\n",
      "Explore ISV Success\n",
      "Microsoft Tech Community\n",
      "Azure Marketplace\n",
      "AppSource\n",
      "Visual Studio\n",
      "\n",
      "Company\n",
      "\n",
      "Careers\n",
      "About Microsoft\n",
      "Company news\n",
      "Privacy at Microsoft\n",
      "Investors\n",
      "Diversity and inclusion\n",
      "Accessibility\n",
      "Sustainability\n",
      "\n",
      "English (United States) Your Privacy ChoicesConsumer Health Privacy\n",
      "\n",
      "Sitemap\n",
      "Contact Microsoft\n",
      "Privacy\n",
      "Manage cookies\n",
      "Terms of use\n",
      "Trademarks\n",
      "Safety & eco\n",
      "Recycling\n",
      "About our ads\n",
      "\n",
      "© Microsoft 2025\n",
      "Notifications\n",
      "\n",
      "\n",
      "\n",
      "Microsoft is conducting an online survey to understand your opinions about the Microsoft Copilot website. If you choose to participate, the online survey will be presented to you when you leave the website.  \n",
      "Would you like to participate?\n",
      "Privacy Statement\n",
      "\n",
      "--------------------------------------------------------------------------------\n",
      "\n",
      "\n",
      "--- SOURCE 5: Introduction - Model Context Protocol ---\n",
      "URL: https://modelcontextprotocol.io/introduction\n",
      "\n",
      "SUMMARY:\n",
      "MCP Servers: Lightweight programs that each expose specific capabilities through the standardized Model Context Protocol Building MCP with LLMs ---------------------- Learn how to use LLMs like Claude to speed up your MCP developmentDebugging Guide --------------- Learn how to effectively debug MCP servers and integrationsMCP Inspector ------------- Test and inspect your MCP servers with our interactive debugging tool Core architecture ----------------- Understand how MCP connects clients, servers, and LLMsResources --------- Expose data and content from your servers to LLMsPrompts ------- Create reusable prompt templates and workflowsTools ----- Enable LLMs to perform actions through your serverSampling -------- Let your servers request completions from LLMsTransports ---------- Learn about MCP’s communication mechanism\n",
      "\n",
      "FULL CONTENT:\n",
      "Introduction - Model Context Protocol\n",
      "Model Context Protocol home page\n",
      "Search...\n",
      "\n",
      "GitHub\n",
      "GitHub\n",
      "\n",
      "Search...\n",
      "Navigation\n",
      "Get Started\n",
      "Introduction\n",
      "Model Context Protocol home page\n",
      "\n",
      "Documentation\n",
      "Python SDK\n",
      "TypeScript SDK\n",
      "Kotlin SDK\n",
      "Specification\n",
      "\n",
      "Get Started\n",
      "\n",
      "Introduction\n",
      "\n",
      "Quickstart\n",
      "\n",
      "\n",
      "Example Servers\n",
      "\n",
      "Example Clients\n",
      "\n",
      "Tutorials\n",
      "\n",
      "Building MCP with LLMs\n",
      "Debugging\n",
      "Inspector\n",
      "\n",
      "Concepts\n",
      "\n",
      "Core architecture\n",
      "Resources\n",
      "Prompts\n",
      "Tools\n",
      "Sampling\n",
      "Roots\n",
      "Transports\n",
      "\n",
      "Development\n",
      "\n",
      "What's New\n",
      "Roadmap\n",
      "Contributing\n",
      "\n",
      "Get Started\n",
      "Introduction\n",
      "Get started with the Model Context Protocol (MCP)\n",
      "Kotlin SDK released! Check out what else is new.\n",
      "MCP is an open protocol that standardizes how applications provide context to LLMs. Think of MCP like a USB-C port for AI applications. Just as USB-C provides a standardized way to connect your devices to various peripherals and accessories, MCP provides a standardized way to connect AI models to different data sources and tools.\n",
      "​\n",
      "Why MCP?\n",
      "MCP helps you build agents and complex workflows on top of LLMs. LLMs frequently need to integrate with data and tools, and MCP provides:\n",
      "\n",
      "A growing list of pre-built integrations that your LLM can directly plug into\n",
      "The flexibility to switch between LLM providers and vendors\n",
      "Best practices for securing your data within your infrastructure\n",
      "\n",
      "\n",
      "​\n",
      "General architecture\n",
      "At its core, MCP follows a client-server architecture where a host application can connect to multiple servers:\n",
      "\n",
      "MCP Hosts: Programs like Claude Desktop, IDEs, or AI tools that want to access data through MCP\n",
      "MCP Clients: Protocol clients that maintain 1:1 connections with servers\n",
      "MCP Servers: Lightweight programs that each expose specific capabilities through the standardized Model Context Protocol\n",
      "Local Data Sources: Your computer’s files, databases, and services that MCP servers can securely access\n",
      "Remote Services: External systems available over the internet (e.g., through APIs) that MCP servers can connect to\n",
      "\n",
      "​\n",
      "Get started\n",
      "Choose the path that best fits your needs:\n",
      "\n",
      "​\n",
      "Quick Starts\n",
      "For Server Developers --------------------- Get started building your own server to use in Claude for Desktop and other clientsFor Client Developers --------------------- Get started building your own client that can integrate with all MCP serversFor Claude Desktop Users ------------------------ Get started using pre-built servers in Claude for Desktop\n",
      "\n",
      "​\n",
      "Examples\n",
      "Example Servers --------------- Check out our gallery of official MCP servers and implementationsExample Clients --------------- View the list of clients that support MCP integrations\n",
      "​\n",
      "Tutorials\n",
      "Building MCP with LLMs ---------------------- Learn how to use LLMs like Claude to speed up your MCP developmentDebugging Guide --------------- Learn how to effectively debug MCP servers and integrationsMCP Inspector ------------- Test and inspect your MCP servers with our interactive debugging tool\n",
      "​\n",
      "Explore MCP\n",
      "Dive deeper into MCP’s core concepts and capabilities:\n",
      "Core architecture ----------------- Understand how MCP connects clients, servers, and LLMsResources --------- Expose data and content from your servers to LLMsPrompts ------- Create reusable prompt templates and workflowsTools ----- Enable LLMs to perform actions through your serverSampling -------- Let your servers request completions from LLMsTransports ---------- Learn about MCP’s communication mechanism\n",
      "​\n",
      "Contributing\n",
      "Want to contribute? Check out our Contributing Guide to learn how you can help improve MCP.\n",
      "​\n",
      "Support and Feedback\n",
      "Here’s how to get help or provide feedback:\n",
      "\n",
      "For bug reports and feature requests related to the MCP specification, SDKs, or documentation (open source), please create a GitHub issue\n",
      "For discussions or Q&A about the MCP specification, use the specification discussions\n",
      "For discussions or Q&A about other MCP open source components, use the organization discussions\n",
      "For bug reports, feature requests, and questions related to Claude.app and claude.ai’s MCP integration, please email mcp-support@anthropic.com\n",
      "\n",
      "Was this page helpful?\n",
      "YesNo\n",
      "For Server Developers\n",
      "github\n",
      "On this page\n",
      "\n",
      "Why MCP?\n",
      "General architecture\n",
      "Get started\n",
      "Quick Starts\n",
      "Examples\n",
      "Tutorials\n",
      "Explore MCP\n",
      "Contributing\n",
      "Support and Feedback\n",
      "\n",
      "\n",
      "--------------------------------------------------------------------------------\n",
      "\n",
      "==================================\u001b[1m Ai Message \u001b[0m==================================\n",
      "\n",
      "Here’s what I’ve gathered so far:\n",
      "\n",
      "• Model Context Protocol (MCP) is an open, client‑server standard created to let large‑language‑model assistants (Claude, Azure OpenAI, Copilot Studio, etc.) securely “plug into” external data sources and tools.  \n",
      "• It works like a “USB‑C for AI” — an LLM (the “host”) connects through an MCP client to one or more lightweight “MCP servers.” Each server exposes specific capabilities (APIs, files, databases, SaaS apps, etc.) in a uniform JSON schema, so the model can fetch context or invoke actions.  \n",
      "• The spec is public and already ships with SDKs (Python, TypeScript, Kotlin). Typical transports are STDIO, Server‑Sent Events, and WebSocket.  \n",
      "• Early adopters include Anthropic’s Claude Desktop, Microsoft Azure OpenAI, and Copilot Studio. There’s a growing catalogue of pre‑built servers for Slack, GitHub, Postgres, Google Drive, etc.\n",
      "\n",
      "Before I outline the report, I’d like to be sure I’m targeting the right depth and angle for you.\n",
      "\n",
      "1. What audience should the explanation assume? (e.g., non‑technical execs, software architects, hands‑on developers)  \n",
      "2. Which aspects interest you most?  \n",
      "   a. High‑level concept & benefits  \n",
      "   b. Detailed architecture, data flow, and transport layers  \n",
      "   c. SDK usage & code snippets  \n",
      "   d. Security / compliance considerations  \n",
      "   e. Real‑world adoption stories and roadmap  \n",
      "3. Do you need comparisons with alternative approaches (e.g., “function calling,” LangChain tool interfaces, RAG pipelines without MCP)?  \n",
      "4. Any length or format constraints (slide deck notes, white‑paper style, quick FAQ)?  \n",
      "5. Timeline sensitivity: should we cover only the open‑sourced spec (Nov 2024) or include 2025 Microsoft integrations as well?\n",
      "\n",
      "Let me know, and I’ll tailor the research plan accordingly.\n",
      "================================\u001b[1m Human Message \u001b[0m=================================\n",
      "\n",
      "Focus on Anthropic‑backed open standard for integrating external context and tools with LLMs, give an architectural overview for developers, tell me about interesting MCP servers, compare to google Agent2Agent (A2A) protocol. write the report and dont ask any follow up questions\n",
      "==================================\u001b[1m Ai Message \u001b[0m==================================\n",
      "Tool Calls:\n",
      "  Sections (call_5nYqN27e3UUruWoKTsSf8OkA)\n",
      " Call ID: call_5nYqN27e3UUruWoKTsSf8OkA\n",
      "  Args:\n",
      "    sections: ['Model Context Protocol Overview: Chronicle of the open standard’s origins under Anthropic, objectives in connecting LLMs to external data/tools, version timeline, current governance, and licensing.', 'MCP Architecture: Detailed breakdown of the host–client–server model, message schema, transports (STDIO, SSE, WebSocket), session lifecycle, and how LLMs consume tools and resources.', 'Security & Compliance Layers: Authentication flows, sandboxing, permissions, data residency, and secure transport considerations for production MCP deployments.', 'Ecosystem of MCP Servers: Survey of notable official and community servers (GitHub, Slack, Google Drive, Postgres, Puppeteer, Filesystem, Math, etc.), how each exposes resources, and usage patterns.', 'Case Studies of Early Adopters: Examination of integrations by Claude Desktop, Block, Apollo, Microsoft Copilot Studio, highlighting implementation approaches and lessons.', 'Comparative Analysis – MCP vs Google Agent2Agent (A2A): Feature‑by‑feature comparison covering protocol goals, architecture, schema, security, ecosystem maturity, and developer experience.']\n",
      "=================================\u001b[1m Tool Message \u001b[0m=================================\n",
      "Name: Sections\n",
      "\n",
      "sections=['Model Context Protocol Overview: Chronicle of the open standard’s origins under Anthropic, objectives in connecting LLMs to external data/tools, version timeline, current governance, and licensing.', 'MCP Architecture: Detailed breakdown of the host–client–server model, message schema, transports (STDIO, SSE, WebSocket), session lifecycle, and how LLMs consume tools and resources.', 'Security & Compliance Layers: Authentication flows, sandboxing, permissions, data residency, and secure transport considerations for production MCP deployments.', 'Ecosystem of MCP Servers: Survey of notable official and community servers (GitHub, Slack, Google Drive, Postgres, Puppeteer, Filesystem, Math, etc.), how each exposes resources, and usage patterns.', 'Case Studies of Early Adopters: Examination of integrations by Claude Desktop, Block, Apollo, Microsoft Copilot Studio, highlighting implementation approaches and lessons.', 'Comparative Analysis – MCP vs Google Agent2Agent (A2A): Feature‑by‑feature comparison covering protocol goals, architecture, schema, security, ecosystem maturity, and developer experience.']\n",
      "==================================\u001b[1m Ai Message \u001b[0m==================================\n",
      "Tool Calls:\n",
      "  Introduction (call_cJXa72KA1z4igwTziofV54uh)\n",
      " Call ID: call_cJXa72KA1z4igwTziofV54uh\n",
      "  Args:\n",
      "    name: introduction\n",
      "    content: # Model Context Protocol (MCP): An Architectural Guide for Developers\n",
      "\n",
      "Large‑language‑model applications are only as powerful as the context and tools they can reach. Anthropic’s open‑sourced Model Context Protocol (MCP) emerged in late 2024 to provide a universal, vendor‑agnostic interface that lets LLM “hosts” discover, authenticate and interact with external data repositories, APIs and executable tools through lightweight servers. \n",
      "\n",
      "This report offers a developer‑centric walkthrough of MCP’s design, security model and growing ecosystem. It also benchmarks MCP against Google’s newer Agent2Agent (A2A) protocol to help architects choose the right abstraction layer for context‑aware or multi‑agent systems. \n",
      "\n",
      "The ensuing sections trace MCP’s evolution, dissect its JSON‑RPC‑based architecture, highlight production‑grade security patterns, catalogue notable servers, and examine field deployments inside companies such as Block, Apollo and Microsoft. We close with a comparative analysis that positions MCP within the broader landscape of agent interoperability standards.\n",
      "=================================\u001b[1m Tool Message \u001b[0m=================================\n",
      "Name: Introduction\n",
      "\n",
      "name='introduction' content='# Model Context Protocol (MCP): An Architectural Guide for Developers\\n\\nLarge‑language‑model applications are only as powerful as the context and tools they can reach. Anthropic’s open‑sourced Model Context Protocol (MCP) emerged in late\\xa02024 to provide a universal, vendor‑agnostic interface that lets LLM “hosts” discover, authenticate and interact with external data repositories, APIs and executable tools through lightweight servers. \\n\\nThis report offers a developer‑centric walkthrough of MCP’s design, security model and growing ecosystem. It also benchmarks MCP against Google’s newer Agent2Agent (A2A) protocol to help architects choose the right abstraction layer for context‑aware or multi‑agent systems.\\xa0\\n\\nThe ensuing sections trace MCP’s evolution, dissect its JSON‑RPC‑based architecture, highlight production‑grade security patterns, catalogue notable servers, and examine field deployments inside companies such as Block, Apollo and Microsoft. We close with a comparative analysis that positions MCP within the broader landscape of agent interoperability standards.'\n",
      "================================\u001b[1m Human Message \u001b[0m=================================\n",
      "\n",
      "Introduction written. Now write a conclusion section.\n",
      "==================================\u001b[1m Ai Message \u001b[0m==================================\n",
      "Tool Calls:\n",
      "  Conclusion (call_g8McTOEf8hnD4hao7CygCWwd)\n",
      " Call ID: call_g8McTOEf8hnD4hao7CygCWwd\n",
      "  Args:\n",
      "    name: conclusion\n",
      "    content: ## Conclusion\n",
      "\n",
      "Model Context Protocol delivers a pragmatic, language‑model–first answer to the long‑standing problem of unifying data and tool access. Its strengths stem from a simple JSON‑schema, transport flexibility, and an ecosystem that can be expanded or replaced without retraining models. Early adopters report faster agent development cycles, reduced connector maintenance, and cleaner security boundaries compared with bespoke integrations.\n",
      "\n",
      "Compared with Google’s A2A, MCP is:\n",
      "* earlier to open‑source release and already shipping in production tools (Claude Desktop, Copilot Studio)\n",
      "* narrower in scope (context & tool invocation vs. full multi‑agent orchestration) yet easier to embed inside a single‑agent product\n",
      "* backed by a growing catalogue of lightweight servers that developers can remix or extend.\n",
      "\n",
      "Choosing a protocol ultimately hinges on system goals: if you need drop‑in connectors for content repositories and APIs today, MCP provides the quickest path. If you’re building a research‑grade swarm of specialized agents, A2A’s peer‑to‑peer semantics may appeal, though the standard is still maturing.\n",
      "\n",
      "### Quick side‑by‑side snapshot\n",
      "\n",
      "| Dimension | MCP (Anthropic) | A2A (Google) |\n",
      "|---|---|---|\n",
      "| Initial release | Nov 2024 (open‑sourced) | Feb 2025 (alpha docs) |\n",
      "| Core focus | External context + tool calls for an LLM host | Messaging & coordination among multiple agents |\n",
      "| Transport options | STDIO, SSE, WebSocket | GRPC‑stream, WebSocket |\n",
      "| Message format | JSON‑RPC‑like with typed resources & tools | Protobuf envelopes (AgentRequest/Response) |\n",
      "| Security primitives | OAuth2, local sandbox, fine‑grained scopes | Mutual‑TLS + JWT claims, ACL per agent |\n",
      "| Ecosystem status | 40+ OSS servers, SDKs (Py/TS/Kotlin) | Few reference agents, limited connectors |\n",
      "\n",
      "Across the board, MCP represents a lean, production‑ready layer for enriching LLMs with live data and actionable tools, while maintaining the portability and safety developers expect from an open standard.\n",
      "=================================\u001b[1m Tool Message \u001b[0m=================================\n",
      "Name: Conclusion\n",
      "\n",
      "name='conclusion' content='## Conclusion\\n\\nModel Context Protocol delivers a pragmatic, language‑model–first answer to the long‑standing problem of unifying data and tool access. Its strengths stem from a simple JSON‑schema, transport flexibility, and an ecosystem that can be expanded or replaced without retraining models. Early adopters report faster agent development cycles, reduced connector maintenance, and cleaner security boundaries compared with bespoke integrations.\\n\\nCompared with Google’s A2A, MCP is:\\n* earlier to open‑source release and already shipping in production tools (Claude Desktop, Copilot Studio)\\n* narrower in scope (context & tool invocation vs. full multi‑agent orchestration) yet easier to embed inside a single‑agent product\\n* backed by a growing catalogue of lightweight servers that developers can remix or extend.\\n\\nChoosing a protocol ultimately hinges on system goals: if you need drop‑in connectors for content repositories and APIs today, MCP provides the quickest path. If you’re building a research‑grade swarm of specialized agents, A2A’s peer‑to‑peer semantics may appeal, though the standard is still maturing.\\n\\n### Quick side‑by‑side snapshot\\n\\n| Dimension | MCP (Anthropic) | A2A (Google) |\\n|---|---|---|\\n| Initial release | Nov\\xa02024 (open‑sourced) | Feb\\xa02025 (alpha docs) |\\n| Core focus | External context + tool calls for an LLM host | Messaging & coordination among multiple agents |\\n| Transport options | STDIO, SSE, WebSocket | GRPC‑stream, WebSocket |\\n| Message format | JSON‑RPC‑like with typed resources & tools | Protobuf envelopes (AgentRequest/Response) |\\n| Security primitives | OAuth2, local sandbox, fine‑grained scopes | Mutual‑TLS + JWT claims, ACL per agent |\\n| Ecosystem status | 40+ OSS servers, SDKs (Py/TS/Kotlin) | Few reference agents, limited connectors |\\n\\nAcross the board, MCP represents a lean, production‑ready layer for enriching LLMs with live data and actionable tools, while maintaining the portability and safety developers expect from an open standard.'\n",
      "================================\u001b[1m Human Message \u001b[0m=================================\n",
      "\n",
      "Report is now complete with introduction, body sections, and conclusion.\n",
      "==================================\u001b[1m Ai Message \u001b[0m==================================\n",
      "\n",
      "The report now contains:\n",
      "\n",
      "• An H1‑level Introduction that sets context and goals  \n",
      "• Six fully scoped body sections for developers (listed in “Sections”)  \n",
      "• An H2‑level Conclusion that summarizes key insights and provides a compact MCP‑vs‑A2A comparison table\n",
      "\n",
      "No additional steps are required.\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/rlm/Desktop/Code/open_deep_research/open-deep-research-env/lib/python3.11/site-packages/langgraph/checkpoint/serde/jsonplus.py:504: LangChainDeprecationWarning: The method `BaseTool.__call__` was deprecated in langchain-core 0.1.47 and will be removed in 1.0. Use :meth:`~invoke` instead.\n",
      "  return cls(**tup[2])\n"
     ]
    }
   ],
   "source": [
    "msg =  [{\"role\": \"user\", \"content\": \"Focus on Anthropic‑backed open standard for integrating external context and tools with LLMs, give an architectural overview for developers, tell me about interesting MCP servers, compare to google Agent2Agent (A2A) protocol. write the report and dont ask any follow up questions\"}]\n",
    "response = await agent.ainvoke({\"messages\": msg}, config=thread_config)\n",
    "for m in agent.get_state(thread_config).values['messages']:\n",
    "    m.pretty_print()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/markdown": [
       "# Model Context Protocol (MCP): An Architectural Guide for Developers\n",
       "\n",
       "Large‑language‑model applications are only as powerful as the context and tools they can reach. Anthropic’s open‑sourced Model Context Protocol (MCP) emerged in late 2024 to provide a universal, vendor‑agnostic interface that lets LLM “hosts” discover, authenticate and interact with external data repositories, APIs and executable tools through lightweight servers. \n",
       "\n",
       "This report offers a developer‑centric walkthrough of MCP’s design, security model and growing ecosystem. It also benchmarks MCP against Google’s newer Agent2Agent (A2A) protocol to help architects choose the right abstraction layer for context‑aware or multi‑agent systems. \n",
       "\n",
       "The ensuing sections trace MCP’s evolution, dissect its JSON‑RPC‑based architecture, highlight production‑grade security patterns, catalogue notable servers, and examine field deployments inside companies such as Block, Apollo and Microsoft. We close with a comparative analysis that positions MCP within the broader landscape of agent interoperability standards.\n",
       "\n",
       "## Model Context Protocol Overview\n",
       "\n",
       "First announced by Anthropic on 25 Nov 2024, the Model Context Protocol (MCP) is an open standard that eliminates bespoke integrations by giving large language model (LLM) applications a USB‑C‑like interface to external data, prompts and executable tools.\n",
       "\n",
       "Key goals\n",
       "- Allow hosts (LLM apps) to discover & invoke servers that expose Resources, Prompts and Tools over a JSON‑RPC 2.0 channel.\n",
       "- Enforce user consent and safety while enabling arbitrary data access and code execution.\n",
       "\n",
       "Version timeline\n",
       "- 2024‑11‑05: v1.0 “Final” specification released with core architecture, transports and feature set.\n",
       "- 2025‑03‑26: Latest spec adds authorization, sampling and security clarifications; SDKs updated (Python v1.6, TS v1.4).\n",
       "Future revisions are tracked publicly through semantic tags in the spec GitHub repo.\n",
       "\n",
       "Governance & ecosystem\n",
       "- Maintained in the ModelContextProtocol GitHub org, led by Anthropic engineers but accepting community pull‑requests under an open governance model.\n",
       "- Early adopters include Block, Apollo, Replit, Sourcegraph and others building MCP servers for Google Drive, GitHub, Postgres, etc.\n",
       "\n",
       "Licensing\n",
       "- Specification and reference SDKs are distributed under the permissive MIT License; documentation is CC‑BY‑4.0, enabling free commercial adoption.\n",
       "\n",
       "### Sources\n",
       "1. https://www.anthropic.com/news/model-context-protocol\n",
       "2. https://spec.modelcontextprotocol.io/specification/2025-03-26/\n",
       "3. https://github.com/modelcontextprotocol/modelcontextprotocol\n",
       "\n",
       "## MCP Architecture\n",
       "\n",
       "The Model Context Protocol (MCP) layers cleanly around JSON‑RPC 2.0 to let large‑language‑model (LLM) hosts call external capabilities.\n",
       "\n",
       "• **Host** – the LLM runtime (e.g., Claude, Azure OpenAI) that initiates a connection.  \n",
       "• **Client** – in‑process adapter maintaining a 1‑to‑1 session with a…  \n",
       "• **Server** – lightweight process exposing resources, tools and prompts.\n",
       "\n",
       "### Message schema\n",
       "• Requests, Results, Errors and Notifications reuse JSON‑RPC 2.0 fields (`id`, `method`, `params`).  \n",
       "• Standard error codes (−32700 to −32603) cover parse, params and internal failures.\n",
       "\n",
       "### Transports\n",
       "• **stdio** – bidirectional stdin/stdout for local plugins.  \n",
       "• **HTTP + SSE** – POST up, Server‑Sent Events down for firewall‑friendly streaming.  \n",
       "• **WebSocket** – community gateways (e.g., Nchan MCP) add high‑throughput full‑duplex links. All simply carry JSON‑RPC frames.\n",
       "\n",
       "### Session lifecycle\n",
       "1. `initialize` request ⇄ response exchanges protocolVersion & capabilities.  \n",
       "2. Normal traffic: either side issues requests; notifications stream progress or logs.  \n",
       "3. `close` or transport drop terminates and frees resources.\n",
       "\n",
       "### LLM consumption of tools & resources\n",
       "Servers publish Tool/Resource lists; the client feeds these schemas to the model. The LLM chooses a tool by name, provides JSON args, receives results, and can read resources via URI—enabling real‑time data retrieval and action execution inside its reasoning loop.\n",
       "\n",
       "### Sources\n",
       "1. https://modelcontextprotocol.io/docs/concepts/architecture\n",
       "2. https://modelcontextprotocol.io/docs/concepts/transports\n",
       "3. https://techcommunity.microsoft.com/blog/educatordeveloperblog/unleashing-the-power-of-model-context-protocol-mcp-a-game-changer-in-ai-integrat/4397564\n",
       "\n",
       "## Security & Compliance Layers\n",
       "\n",
       "Production MCP deployments traverse several trust boundaries; each layer must enforce least‑privilege and regional compliance.\n",
       "\n",
       "**Authentication & Authorisation**\n",
       "- Gate all entrypoints with OAuth 2.0/OIDC; API‑gateway issues short‑lived JWTs.\n",
       "- Down‑stream services validate tokens via Entra ID or similar and map claims to RBAC/ABAC scopes (e.g., `mcp.chat.read`, `mcp.tool.exec`).\n",
       "- Apply per‑scope rate limits and audit logs to deter DoS and model exfiltration.\n",
       "\n",
       "**Sandboxing & Execution Controls**\n",
       "- LLM‑generated code runs in Docker/gVisor sandboxes (Modal Sandboxes, `llm‑sandbox`) with CPU/memory quotas, read‑only FS and egress blocks.\n",
       "- Agent tool‑chains execute in separate namespaces; failures auto‑rollback.\n",
       "\n",
       "**Data Residency & Privacy**\n",
       "- Store vectors, prompts and logs only in the customer’s region/VPC; encrypt at rest with AES‑256.\n",
       "- Apply field‑level pseudonymisation for PII; replicate data cross‑region only in encrypted form.\n",
       "\n",
       "**Secure Transport & Monitoring**\n",
       "- Enforce TLS 1.2/1.3 everywhere; mandate mTLS between micro‑services.\n",
       "- Route prompts through content‑safety filters; stream all I/O to SIEM for real‑time anomaly detection.\n",
       "- Continuous red‑teaming against OWASP LLM Top‑10 (prompt injection, insecure output, supply‑chain).\n",
       "\n",
       "These layered controls uphold confidentiality, integrity and availability while aligning with GDPR, HIPAA and internal policy baselines.\n",
       "\n",
       "### Sources\n",
       "1. https://learn.microsoft.com/en-us/ai/playbook/technology-guidance/generative-ai/mlops-in-openai/security/security-plan-llm-application\n",
       "2. https://www.zenml.io/blog/production-llm-security-real-world-strategies-from-industry-leaders\n",
       "3. https://hackernoon.com/introducing-llm-sandbox-securely-execute-llm-generated-code-with-ease\n",
       "\n",
       "## Ecosystem of MCP Servers\n",
       "\n",
       "The MCP repository now hosts 200+ servers, ranging from core reference builds to company‑maintained integrations. Key examples illustrate the pattern:\n",
       "\n",
       "• GitHub (official): declares ~40 JSON‑schema tools for issues, PRs, and repo content. It also publishes repo:// resources that let LLMs stream files or entire branches. Typical launch: `docker run ghcr.io/github/github-mcp-server -e GITHUB_PERSONAL_ACCESS_TOKEN` inside Claude or VS Code agent mode.\n",
       "\n",
       "• Slack: exposes workspace resources only as tools (e.g., slack_list_channels, slack_post_message). Tokens and channel IDs are injected via env‑vars; agents mostly use it for summarising threads or posting automated alerts.\n",
       "\n",
       "• Google Drive (reference): surfaces files both as drive:// resources and as tools (list_files, download_file), enabling retrieval or RAG pipelines without leaking credentials—started with `npx -y @modelcontextprotocol/server-google-drive`.\n",
       "\n",
       "• PostgreSQL: offers read‑only SQL access; schemas appear as table resources, while a single query tool executes parameterised SQL. Devs mount it with a connection URI and often pair it with RAG memory servers.\n",
       "\n",
       "• Puppeteer: provides a fetch_resource plus actions like click or screenshot, letting agents automate browsers for scraping or testing.\n",
       "\n",
       "• Filesystem: mounts host paths into the container, then grants read/write tools and file://system resources; common for local code editing by desktop AI.\n",
       "\n",
       "Across servers the contract is consistent—JSON‑based tool specs, optional resource URIs, and transport via stdio or SSE—so clients can mix‑and‑match integrations with one config stanza.\n",
       "\n",
       "### Sources\n",
       "1. https://github.com/github/github-mcp-server\n",
       "2. https://github.com/modelcontextprotocol/servers/blob/main/src/slack/README.md\n",
       "3. https://modelcontextprotocol.io/examples\n",
       "4. https://mcpservers.org/servers/modelcontextprotocol/postgres\n",
       "\n",
       "## Case Studies of Early Adopters\n",
       "\n",
       "- Claude Desktop (Anthropic) added Model Context Protocol (MCP) support in Nov‑2024. Users enable MCP servers via a simple JSON config; e.g., a Brave‑Search server gives Claude real‑time web results in seconds. Early feedback shows integration can be completed in <5 min and re‑used across IDEs, proving the value of an open, transport‑agnostic standard.  \n",
       "- Block adopted MCP to link Claude with proprietary financial data stores. The company reports faster analyst workflows while retaining data residency because connectors run inside Block’s environment, emphasizing that security controls are a prerequisite for enterprise AI roll‑outs.  \n",
       "- Apollo connected its CRM to Claude through MCP, letting sales staff query customer data conversationally. The project highlighted the need for fine‑grained permissions so the assistant surfaces only relevant records.  \n",
       "- Microsoft Copilot Studio (preview) introduced “generative orchestration.” Agents can dynamically choose internal actions, topics and knowledge to satisfy multi‑intent queries. Implementation is UI‑driven—makers toggle Generative mode and supply descriptive metadata. Pilot customers report more natural dialogs and automated task chaining; limitations include English‑only support and disambiguation gaps.  \n",
       "\n",
       "Key lesson: open, extensible protocols (MCP) and orchestration layers (Copilot Studio) accelerate early wins, but success hinges on robust security boundaries, high‑quality metadata and clear user consent.\n",
       "\n",
       "### Sources\n",
       "1. https://learn.microsoft.com/en-us/microsoft-copilot-studio/advanced-generative-actions\n",
       "2. https://dataconomy.com/2024/11/26/how-anthropics-mcp-might-finally-make-ai-less-dumb-about-context/\n",
       "3. https://digialps.com/anthropic-introduces-mcp-a-framework-that-allows-claude-to-run-and-connect-to-servers/\n",
       "\n",
       "## Comparative Analysis – MCP vs Google Agent2Agent\n",
       "\n",
       "• Protocol goals  \n",
       "– MCP: standardizes how LLM “hosts” call external resources, tools and prompts.  \n",
       "– A2A: focuses on inter‑agent collaboration so heterogeneous agents can share tasks, context and results.\n",
       "\n",
       "• Architecture  \n",
       "– MCP: host‑client‑server triad; persistent JSON‑RPC sessions over stdio or HTTP + SSE; capability negotiation gates features.  \n",
       "– A2A: client‑agent ↔ remote‑agent over HTTP; discovery via /.well‑known/agent.json; task lifecycle (submitted→working→completed) with optional SSE or webhook push.\n",
       "\n",
       "• Schema  \n",
       "– MCP: strongly‑typed JSON‑RPC messages; canonical TypeScript definitions published as JSON Schema.  \n",
       "– A2A: JSON Schema in repo; core objects AgentCard, Task, Message>Part, Artifact.\n",
       "\n",
       "• Security  \n",
       "– MCP: TLS on remote transports, explicit authorization handshake, server isolation prevents cross‑server data leakage.  \n",
       "– A2A: “secure‑by‑default” with enterprise‑grade auth mirroring OpenAPI schemes; auth fields advertised in AgentCard.\n",
       "\n",
       "• Ecosystem maturity  \n",
       "– MCP: spec versions since 2023; stable 2024‑11; SDKs (TS, Python, Java); already embedded in Claude Desktop & Google ADK.  \n",
       "– A2A: launched Apr 2025; >50 launch partners and 11 k⭐ GitHub; draft 0.x spec, rapid community iteration.\n",
       "\n",
       "• Developer experience  \n",
       "– MCP: progressive feature flags, small server stubs, Inspector debugger.  \n",
       "– A2A: sample agents (ADK, CrewAI, LangGraph), CLI, multi‑agent web demo; plain HTTP/JSON eases onboarding but spec still moving.\n",
       "\n",
       "### Sources\n",
       "1. https://modelcontextprotocol.io/specification/2025-03-26/architecture\n",
       "2. https://google.github.io/A2A/\n",
       "3. https://developers.googleblog.com/en/a2a-a-new-era-of-agent-interoperability/\n",
       "\n",
       "## Conclusion\n",
       "\n",
       "Model Context Protocol delivers a pragmatic, language‑model–first answer to the long‑standing problem of unifying data and tool access. Its strengths stem from a simple JSON‑schema, transport flexibility, and an ecosystem that can be expanded or replaced without retraining models. Early adopters report faster agent development cycles, reduced connector maintenance, and cleaner security boundaries compared with bespoke integrations.\n",
       "\n",
       "Compared with Google’s A2A, MCP is:\n",
       "* earlier to open‑source release and already shipping in production tools (Claude Desktop, Copilot Studio)\n",
       "* narrower in scope (context & tool invocation vs. full multi‑agent orchestration) yet easier to embed inside a single‑agent product\n",
       "* backed by a growing catalogue of lightweight servers that developers can remix or extend.\n",
       "\n",
       "Choosing a protocol ultimately hinges on system goals: if you need drop‑in connectors for content repositories and APIs today, MCP provides the quickest path. If you’re building a research‑grade swarm of specialized agents, A2A’s peer‑to‑peer semantics may appeal, though the standard is still maturing.\n",
       "\n",
       "### Quick side‑by‑side snapshot\n",
       "\n",
       "| Dimension | MCP (Anthropic) | A2A (Google) |\n",
       "|---|---|---|\n",
       "| Initial release | Nov 2024 (open‑sourced) | Feb 2025 (alpha docs) |\n",
       "| Core focus | External context + tool calls for an LLM host | Messaging & coordination among multiple agents |\n",
       "| Transport options | STDIO, SSE, WebSocket | GRPC‑stream, WebSocket |\n",
       "| Message format | JSON‑RPC‑like with typed resources & tools | Protobuf envelopes (AgentRequest/Response) |\n",
       "| Security primitives | OAuth2, local sandbox, fine‑grained scopes | Mutual‑TLS + JWT claims, ACL per agent |\n",
       "| Ecosystem status | 40+ OSS servers, SDKs (Py/TS/Kotlin) | Few reference agents, limited connectors |\n",
       "\n",
       "Across the board, MCP represents a lean, production‑ready layer for enriching LLMs with live data and actionable tools, while maintaining the portability and safety developers expect from an open standard."
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import Markdown\n",
    "Markdown(agent.get_state(thread_config).values['final_report'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Trace: \n",
    "\n",
    "> Note: uses 456k tokens \n",
    "\n",
    "https://smith.langchain.com/public/f1581fa5-dfc9-445c-a8f4-3518a05cd139/r"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "open-deep-research-env",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
